作者:孙一诺她爹_480 | 来源:互联网 | 2023-07-01 20:16
篇首语:本文由编程笔记#小编为大家整理,主要介绍了FlinkWindow窗口开始结束时间分析-源码探索相关的知识,希望对你有一定的参考价值。首先flink的窗口分配
篇首语:本文由编程笔记#小编为大家整理,主要介绍了Flink Window窗口开始结束时间分析-源码探索相关的知识,希望对你有一定的参考价值。
首先 flink 的窗口分配是发生在 StreamTask 初始化的过程中。
核心方法是 TumblingProcessingTimeWindows.assignWindows(…)
@Override
public Collection<TimeWindow> assignWindows(
Object element, long timestamp, WindowAssignerContext context)
final long now &#61; context.getCurrentProcessingTime();
if (staggerOffset &#61;&#61; null)
staggerOffset &#61;
windowStagger.getStaggerOffset(context.getCurrentProcessingTime(), size);
long start &#61;
TimeWindow.getWindowStartWithOffset(
now, (globalOffset &#43; staggerOffset) % size, size);
return Collections.singletonList(new TimeWindow(start, start &#43; size));
可以通过这个方法往上点&#xff0c;会发现他是在StreamTask初始化的时候触发的。
这个方法调用了一个很重要的方法来计算窗口开始时间&#xff1a;TimeWindow.getWindowStartWithOffset(…)
public static long getWindowStartWithOffset(long timestamp, long offset, long windowSize)
return timestamp - (timestamp - offset &#43; windowSize) % windowSize;
注释里有我的简单总结&#xff0c;供参考。
创作打卡挑战赛 赢取流量/现金/CSDN周边激励大奖